package com.cww.study.swagger;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;

/**
 * @program: myes
 * @description: 该类自动注入失败, 需要自定义提供  restTemplate是HTTP请求工具
 * 在swagger配置文件的内部类注入了RestTemplate 需要在这添加到容器里面去
 * @author: 陈英俊
 * @create: 2021-09-09 10:59
 */
@Configuration
public class RestTemplateConfig {


    /**
     * 建立连接时间
     */
    @Value("${config.restTemplate.connectTimeout:-1}")
    int connectTimeout;

    /**
     * 连接已经建立,开始读取资源,时间内,没有资源读取到客户端,提示异常
     */
    @Value("${config.restTemplate.readTimeout:-1}")
    int readTimeout;


    /**
     * 配置和创建一个构建器
     */
    @Autowired
    private RestTemplateBuilder builder;

    @Bean
    public RestTemplate restTemplate() {

        // 构建一个简单客户端请求的工厂
        SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
        //设置底层URLConnection的连接超时(毫秒)
        requestFactory.setConnectTimeout(this.connectTimeout);
        //设置底层URLConnection的读超时(以毫秒为单位)
        requestFactory.setReadTimeout(this.readTimeout);
        //根据给定的工厂实例构建一个实例
        return new RestTemplate(requestFactory);
    }
}
